package com.ideviu.dao.hibernate;

import java.util.List;

import com.ideviu.dao.hibernate.GenericDaoHibernate;
import com.ideviu.model.Anuncio;
import com.ideviu.service.DataNotFoundException;
import com.ideviu.dao.AnuncioDao;

import org.springframework.stereotype.Repository;

@Repository("anuncioDao")
public class AnuncioDaoHibernate extends GenericDaoHibernate<Anuncio, Long> implements AnuncioDao {

    public AnuncioDaoHibernate() {
        super(Anuncio.class);
    }

    /**
     * {@inheritDoc}
     */
    public Anuncio saveAnuncio(Anuncio anuncio) {
       if (log.isDebugEnabled()) {
            log.debug("id anuncio: " + anuncio.getId());
        }
        getHibernateTemplate().saveOrUpdate(anuncio);
        // necessary to throw a DataIntegrityViolation and catch it in  the Manager
        getHibernateTemplate().flush();
        return anuncio;
    }
    
    /**
     * {@inheritDoc}
     * @throws DataNotFoundException 
     */
    @SuppressWarnings("unchecked")
    public List<Anuncio> getAnunciosByIdNegocio(Long idNegocio) throws DataNotFoundException {
    	List anuncios = getHibernateTemplate().find("from Anuncios where anuncio.negocio.id=?", idNegocio);
        if (anuncios == null || anuncios.isEmpty()) {
            throw new DataNotFoundException("No existen anuncios asociados al negocio con id '" + idNegocio);
        } else {
            return anuncios;
        }
    }
   
}
